import pymysql
from faker import Faker
faker = Faker(locale='zh_cn')

"""
账号:root
密码：1965331442Xby@
ip地址：47.99.105.120
数据库：ying
"""

# 创建数据库对象：
db = pymysql.connect(user='root',password='1965331442Xby@',host='47.99.105.120',database='ying',cursorclass=pymysql.cursors.DictCursor)

cursor = db.cursor()
# 查询数据库，符合查询条件的全部内容

cursor.execute('select * from student where age = 22')
result = cursor.fetchall()
# print(result)

# 查询数据库，符合查询条件的一条内容
cursor.execute('select * from student where age=22')
result = cursor.fetchone()
# print(result)

# 增加数据
cursor.execute(f'insert into student(name,address) values("{faker.name()}","{faker.address()}")')
db.commit()     # 涉及到对数据库真实改变的：增、删、改，都需要用到数据库提交才可以

# 再次查询，看是否新增成功
cursor.execute('select * from student')
r = cursor.fetchall()
# print(r)

# 修改数据
cursor.execute('update student set name="张三丰" where name="李四"')
db.commit()

# 再次查看内容
cursor.execute('select * from student')
result = cursor.fetchall()
print(result)

# 删除数据
cursor.execute("delete from student where name='张三丰'")
db.commit()

# 再次查看数据内容
cursor.execute('select * from student')
result = cursor.fetchall()
print(result)

# 关闭数据库
cursor.close()
db.close()

# 使用with
"""
with pymysql.connect(user='root',password='123456',host='8.148.229.201',database='jiac',cursorclass =
pymysql.cursors.DictCursor) as db:
    # 创建游标对象：游标就相当于执行sql后的回车一样，用游标提交sql
    cursor = db.cursor()

    # 查询数据库内容
    cursor.execute('select * from student where age=22')  # 使用游标执行sql语句
    result = cursor.fetchall()  # 查询符合sql语句的全部内容
    print(result)  # result是查询后的结果
"""
"""
创建起始类：

   创建函数：
         与数据库建立连接
   创建游标函数
   
   关闭数据库
   
创建目标类：

    按照条件去创建相关函数
    建立连接
    try:
        写相关函数逻辑（要实现的功能）
    except：
        报错回滚
    finally：
        关闭

    按照条件创建相关函数
    建立连接
    try：
        写相关函数逻辑（要实现的功能）
    except：
        报错回滚
    finall:
        关闭
    
验证书写的函数的相关功能：
     ****************  


class DB:
    def connect(self):
        self.db = pymysql.connect(user='****',password='****',database='****',host='*********',cursorclass =
        pymysql.cursors.DictCursor)
        # 创建游标
        self.cursor = self.db.cursor()
    # 关闭数据库方法
    def close(self):
        self.cursor.close()
        self.db.close()
class ***(DB):
    # create table stu(id int primary key auto_increment,name varchar(20) not null,age int,address varchar(50) default '沈阳',ssn varchar(50));
    def insertRow(self,row:int=100):
        # 姓名、年龄、家庭住址、身份证号码
        self.connect()
        #连接
        try:
            **********
            ********
        except:
            # 报错先回滚
            self.db.rollback()
            traceback.print_exc()
        finally:
            self.close()

    def **********(self):
        self.connect()
        #连接
        try:
            *****
            *********
        except:
            # 报错先回滚
            self.db.rollback()
            traceback.print_exc()
        finally:
            self.close()
"""






















